﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Collections.ObjectModel;
using System.Data;
using produccion.reportes;
using System.Windows.Controls.Primitives;
using System.Threading;
using System.Globalization;
using System.Collections;

namespace produccion.forms
{
    /// <summary>
    /// Lógica de interacción para FrmAuditorias.xaml
    /// </summary>
    public partial class FrmAuditorias : Window
    {
        #region FJRF - Variables del sistema
        MDOgeneral MdoGeneral = new MDOgeneral();//FJRF - Traemos toda la informacion y funciones de MdoGeneral

        DataTable DtConsulta;//FJRF - Usamos este DataTable para hacer consultas generales

        DataSet DsConsulta;//FJRF - Usamos este DataTable para hacer consultas generales
        String StrConsulta;//FJRF - Usamos este DataTable para hacer consultas generales
        
        DataTable DtAuditoriasEncabezado1;//FJRF - Para el encabezado
        DataTable DtAuditoriasEncabezadoTotales1;//FJRF - Para los totales del encabezado
        DataTable DtAuditoriasDetalle1;//FJRF - Para el encabezado
        DataTable DtAuditoriasDetalleTotales1;//FJRF - Para los totales del encabezado

        String StrAuditoriaSeleccionada = "";//FJRF - Para las auditorias seleccionadas
        DateTime DttFecha = new DateTime();//FJRF - Creamos una variable que nos maneje la fecha

        String StrConsultaEncabeszado1;//FJRF - Usamos este DataTable para hacer consultas generales
        String StrConsultaEncabezadoTotales1;//FJRF - Usamos este DataTable para hacer consultas generales
        String StrConsultaDetalle1;//FJRF - Usamos este DataTable para hacer consultas generales
        String StrConsultaDetalleTotales1;//FJRF - Usamos este DataTable para hacer consultas generales
        #endregion

        #region FJRF - EVENTOS DEL FORMULARIO
        public FrmAuditorias()
        {
            InitializeComponent();
        }
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            #region FJRF - Configuracion inicial del formulario
            string strTituloVentana = "AUDITORIAS" + " - Usuario:" + MDOgeneral.usuario + " - [FrmAuditorias]";//FJRF - Armamos el titulo de la ventana
            Title = strTituloVentana;//FJRF - Ponemos el titulo de la ventana

            System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");//FJRF - Con esto aseguramos que la base de datos reciba los numeros como se deben recibir
            Thread.CurrentThread.CurrentCulture = (CultureInfo)Thread.CurrentThread.CurrentCulture.Clone();
            Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
            #endregion

            DttFecha = DateTime.Now;//FJRF - Establecemos la fecha actual
            DtpFechaInicial.SelectedDate = new DateTime(DttFecha.Year, DttFecha.Month, 1);//FJRF - Obtenemos el primer dia del mes
            DtpFechaFinal.SelectedDate = new DateTime(DttFecha.Year, DttFecha.Month + 1, 1).AddDays(-1); ;//FJRF - Obtenemos el ultimo dia del mes

            #region FJRF - Quitamos el estilo al objeto para poder manejar mejor los focos del objeto
            CboCodigoFiltro1.Style = null;//FJRF - Le quitamos el estilo al objeto para que no pase el foco a otro lado
            CboNombreFiltro1.Style = null;//FJRF - Le quitamos el estilo al objeto para que no pase el foco a otro lado

            TxtDatoDigitadoFiltro2.Style = null;//FJRF - Le quitamos el estilo al objeto para que no pase el foco a otro lado
            #endregion

            PttV_PonerFiltrosVisibles(false);//FJRF - Ponemos el objeto invisibles

            CboAuditoriaSeleccionada.SelectedIndex = 0;//FJRF - Ponemos la seleccion en la primera posicion
            CboAuditoriaSeleccionada.Focus();//FJRF - Ponemos el foco inicial en este objeto
        }
        private void CboAuditoriaSeleccionada_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            DtpFechaInicial.SelectedDate = new DateTime(DttFecha.Year, DttFecha.Month, 1);//FJRF - Obtenemos el primer dia del mes
            DtpFechaFinal.SelectedDate = new DateTime(DttFecha.Year, DttFecha.Month + 1, 1).AddDays(-1); ;//FJRF - Obtenemos el ultimo dia del mes
            PttV_Limpiar();//FJRF - Si el usuario cambia alguna dato limpiamos
        }
        private void DtpFechaInicial_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
        {
            PttV_Limpiar();//FJRF - Si el usuario cambia alguna dato limpiamos
        }
        private void DtpFechaFinal_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
        {
            PttV_Limpiar();//FJRF - Si el usuario cambia alguna dato limpiamos
        }
        #region FJRF - Grids 1
        private void DtgAuditorias1_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
        {
            string strNombreColumna = "";//FJRF - Variable para saber el nombre de la columna
            strNombreColumna = e.Column.Header.ToString();//FJRF - Extraemos el nombre de la columna

            if (e.PropertyType == typeof(System.DateTime))//FJRF - Estas son las columnas que tendran el formato de fecha
            {
                (e.Column as DataGridTextColumn).Binding.StringFormat = "dd/MM/yyyy";//FJRF - Asignamos el formato a la fecha
            }

            if (StrAuditoriaSeleccionada == "Entradas por rango de fechas")
            {
                if (strNombreColumna == "CANTIDAD" || strNombreColumna == "VALOR")//FJRF - Si alguna de las columnas tiene este nombre hacemos lo siguiente
                {
                    Style MyStyleTextAlignmentProperty = new Style(typeof(DataGridCell));//FJRF - Creamos un nuevo estilo para la celda
                    MyStyleTextAlignmentProperty.Setters.Add(new Setter(TextBlock.TextAlignmentProperty, TextAlignment.Right));//FJRF - Alineamos los datos de la celda a la derecha

                    (e.Column as DataGridTextColumn).Binding.StringFormat = "{0:##,#0.##}";//FJRF - Enviamos el formato a la celda
                    (e.Column as DataGridTextColumn).CellStyle = MyStyleTextAlignmentProperty;//FJRF - Asignamos el estilo creado
                }
            }
            e.Column.IsReadOnly = true;//FJRF - Inavilita las columnas para que no se pueda escribir sobre ella
        }
        private void DtgAuditoriasTotales1_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
        {
            string strNombreColumna = "";//FJRF - Variable para saber el nombre de la columna
            strNombreColumna = e.Column.Header.ToString();//FJRF - Extraemos el nombre de la columna

            if (e.PropertyType == typeof(System.DateTime))//FJRF - Estas son las columnas que tendran el formato de fecha
            {
                (e.Column as DataGridTextColumn).Binding.StringFormat = "dd/MM/yyyy";//FJRF - Asignamos el formato a la fecha
            }

            if (StrAuditoriaSeleccionada == "Entradas por rango de fechas")
            {
                if (strNombreColumna == "ENTRADAS" || strNombreColumna == "CANTIDAD" || strNombreColumna == "VALOR")//FJRF - Si alguna de las columnas tiene este nombre hacemos lo siguiente
                {
                    Style MyStyleTextAlignmentProperty = new Style(typeof(DataGridCell));//FJRF - Creamos un nuevo estilo para la celda
                    MyStyleTextAlignmentProperty.Setters.Add(new Setter(TextBlock.TextAlignmentProperty, TextAlignment.Right));//FJRF - Alineamos los datos de la celda a la derecha

                    (e.Column as DataGridTextColumn).Binding.StringFormat = "{0:##,#0.##}";//FJRF - Enviamos el formato a la celda
                    (e.Column as DataGridTextColumn).CellStyle = MyStyleTextAlignmentProperty;//FJRF - Asignamos el estilo creado
                }
            }
            e.Column.IsReadOnly = true;//FJRF - Inavilita las columnas para que no se pueda escribir sobre ella
        }
        private void DtgAuditorias1_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            String StrBuscarPorElCampo1 = "", StrElDatoSeleccionado1 = "";//FJRF - Parametros que enviaremos al detalle

            if (StrAuditoriaSeleccionada == "Entradas por rango de fechas")
            {
                if (DtgAuditorias1.Items.Count > 0)
                {
                    StrBuscarPorElCampo1 = "HOJA";//FJRF - Cargamos el campo por el que filtraremos los datos

                    DataRowView DrwDatosDelGrid = DtgAuditorias1.SelectedItem as DataRowView;//FJRF - Cargamos un DataRowView con el dato seleccionado
                    DataRow DrFilaDelGrid = DrwDatosDelGrid.Row;//FJRF - Asignamos las finas

                    String StrCodigoOrden = Convert.ToString(DrFilaDelGrid.ItemArray[1]);//FJRF - Traemos el dato en la columna dada de la fila seleccionada
                    StrElDatoSeleccionado1 = StrCodigoOrden;//FJRF - Enviamos el dato encontrado que filtrara los datos

                    PttV_Procesar2(StrBuscarPorElCampo1, StrElDatoSeleccionado1);//FJRF - Cargamos el detalle de los datos
                }
            }
        }
        private void DtgAuditorias1_KeyUp(object sender, KeyEventArgs e)
        {
            String StrBuscarPorElCampo1 = "", StrElDatoSeleccionado1 = "";//FJRF - Parametros que enviaremos al detalle

            if (StrAuditoriaSeleccionada == "Entradas por rango de fechas")
            {
                if (DtgAuditorias1.Items.Count > 0)
                {
                    StrBuscarPorElCampo1 = "HOJA";//FJRF - Cargamos el campo por el que filtraremos los datos

                    DataRowView DrwDatosDelGrid = DtgAuditorias1.SelectedItem as DataRowView;//FJRF - Cargamos un DataRowView con el dato seleccionado
                    DataRow DrFilaDelGrid = DrwDatosDelGrid.Row;//FJRF - Asignamos las finas

                    String StrCodigoOrden = Convert.ToString(DrFilaDelGrid.ItemArray[1]);//FJRF - Traemos el dato en la columna dada de la fila seleccionada
                    StrElDatoSeleccionado1 = StrCodigoOrden;//FJRF - Enviamos el dato encontrado que filtrara los datos

                    PttV_Procesar2(StrBuscarPorElCampo1, StrElDatoSeleccionado1);//FJRF - Cargamos el detalle de los datos
                }
            }
        }
        #endregion

        #region FJRF - Grids 2
        private void DtgAuditorias2_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
        {
            string strNombreColumna = "";//FJRF - Variable para saber el nombre de la columna
            strNombreColumna = e.Column.Header.ToString();//FJRF - Extraemos el nombre de la columna

            if (e.PropertyType == typeof(System.DateTime))//FJRF - Estas son las columnas que tendran el formato de fecha
            {
                (e.Column as DataGridTextColumn).Binding.StringFormat = "dd/MM/yyyy";//FJRF - Asignamos el formato a la fecha
            }

            if (StrAuditoriaSeleccionada == "Entradas por rango de fechas")
            {
                if (strNombreColumna == "CANTIDAD" || strNombreColumna == "COSTO" || strNombreColumna == "TOTAL")//FJRF - Si alguna de las columnas tiene este nombre hacemos lo siguiente
                {
                    Style MyStyleTextAlignmentProperty = new Style(typeof(DataGridCell));//FJRF - Creamos un nuevo estilo para la celda
                    MyStyleTextAlignmentProperty.Setters.Add(new Setter(TextBlock.TextAlignmentProperty, TextAlignment.Right));//FJRF - Alineamos los datos de la celda a la derecha

                    (e.Column as DataGridTextColumn).Binding.StringFormat = "{0:##,#0.##}";//FJRF - Enviamos el formato a la celda
                    (e.Column as DataGridTextColumn).CellStyle = MyStyleTextAlignmentProperty;//FJRF - Asignamos el estilo creado
                }
            }
            e.Column.IsReadOnly = true;//FJRF - Inavilita las columnas para que no se pueda escribir sobre ella
        }
        private void DtgAuditoriasTotales2_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
        {
            string strNombreColumna = "";//FJRF - Variable para saber el nombre de la columna
            strNombreColumna = e.Column.Header.ToString();//FJRF - Extraemos el nombre de la columna

            if (e.PropertyType == typeof(System.DateTime))//FJRF - Estas son las columnas que tendran el formato de fecha
            {
                (e.Column as DataGridTextColumn).Binding.StringFormat = "dd/MM/yyyy";//FJRF - Asignamos el formato a la fecha
            }

            if (StrAuditoriaSeleccionada == "Entradas por rango de fechas")
            {
                if (strNombreColumna == "MATERIALES" || strNombreColumna == "CANTIDAD" || strNombreColumna == "COSTO" || strNombreColumna == "TOTAL")//FJRF - Si alguna de las columnas tiene este nombre hacemos lo siguiente
                {
                    Style MyStyleTextAlignmentProperty = new Style(typeof(DataGridCell));//FJRF - Creamos un nuevo estilo para la celda
                    MyStyleTextAlignmentProperty.Setters.Add(new Setter(TextBlock.TextAlignmentProperty, TextAlignment.Right));//FJRF - Alineamos los datos de la celda a la derecha

                    (e.Column as DataGridTextColumn).Binding.StringFormat = "{0:##,#0.##}";//FJRF - Enviamos el formato a la celda
                    (e.Column as DataGridTextColumn).CellStyle = MyStyleTextAlignmentProperty;//FJRF - Asignamos el estilo creado
                }
            }
            e.Column.IsReadOnly = true;//FJRF - Inavilita las columnas para que no se pueda escribir sobre ella
        }
        #endregion

        private void BtnProcesar_Click(object sender, RoutedEventArgs e)
        {
            if (CboAuditoriaSeleccionada.SelectedIndex == 0)//FJRF - Si no hay seleccionado ninguna auditoria hacemos lo siguiente
            {
                MessageBox.Show("Debe seleccionar una auditoria para poder procesar los datos","PROCESO CANCELADO",MessageBoxButton.OK, MessageBoxImage.Warning);//FJRF - Enviamos un mensaje al usuario
            }
            else//FJRF - Si hay seleccionada alguna auditoria hacemos lo siguiente
            {
                PttV_Procesar1();//FJRF - Buscamos los datos de la auditoria seleccionada
            }
        }
        private void BtnSalir_Click(object sender, RoutedEventArgs e)
        {
            this.Close();//FJRF - Nos salimos del sistema
        }
        private void BtnAyudaExportarEncabezado_Click(object sender, RoutedEventArgs e)
        {
            PttV_ExportarOFiltarDatos("Encabezado");//FJRF - Exportamos o filtramos los datos que existen en el encabezado
        }
        private void BtnAyudaExportarDetalle_Click(object sender, RoutedEventArgs e)
        {
            PttV_ExportarOFiltarDatos("Detalle");//FJRF - Exportamos o filtramos los datos que existen en el detalle
        }
        private void CboCodigoFiltro1_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (this.IsLoaded == true)//FJRF - Si el formulario esta cargado hacemos lo siguiente
            {
                CboNombreFiltro1.SelectedIndex = CboCodigoFiltro1.SelectedIndex;//FJRF - Igualamos la posicion del codigo seleccionado con la posicion donde esta el nombre
                PttV_BuscarDatosFiltrados();//FJRF - Buscamos los datos filtrados
            }
        }
        private void CboNombreFiltro1_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (this.IsLoaded == true)//FJRF - Si el formulario esta cargado hacemos lo siguiente
            {
                CboCodigoFiltro1.SelectedIndex = CboNombreFiltro1.SelectedIndex;//FJRF - Igualamos la posicion del nombre seleccionado don la posicion donde esta el codig
                PttV_BuscarDatosFiltrados();//FJRF - Buscamos los datos filtrados
            }
        }
        private void TxtDatoDigitadoFiltro2_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter)//FJRF - Si el usuario presiona enter entonces hacemos lo siguiente
            {
                PttV_BuscarDatosFiltrados();//FJRF - Buscamos los datos filtrados
            }
        }
        #endregion

        #region FJRF - PROCEDIMIENTOS Y FUNCIONES DEL FORMULARIO
        protected void PttV_Procesar1()
        {
            StrConsultaEncabeszado1 = "";//FJRF - Limpiamos los datos
            StrConsultaEncabezadoTotales1 = "";//FJRF - Limpiamos los datos
            StrConsultaDetalle1 = "";//FJRF - Limpiamos los datos
            StrConsultaDetalleTotales1 = "";//FJRF - Limpiamos los datos

            StrAuditoriaSeleccionada = CboAuditoriaSeleccionada.Text;//FJRF - Cargamos la auditoria seleccionada

            if (StrAuditoriaSeleccionada == "Entradas por rango de fechas")
            {
                #region FJRF - Armamos el encabezado de las entradas
                //FJRF - ARMAMOS EL ENCABEZADO
                StrConsultaEncabeszado1 = "SELECT FECHAENTRADA, HOJA,  NROPEDIDO,  SUM(PROGRAMADO) AS CANTIDAD, SUM(VALORTOTAL) AS VALOR, DOCUMENTO, (CODIGOPROVEEDOR || ' - ' || NOMBREPROVEEDOR) AS PROVEEDOR,  CONCEPTO  ";//FJRF - Armamos la consulta
                StrConsultaEncabeszado1 = StrConsultaEncabeszado1 + "FROM VIS_DETENTP  ";//FJRF - Armamos la consulta
                StrConsultaEncabeszado1 = StrConsultaEncabeszado1 + "WHERE FECHAENTRADA >= TO_DATE('" + DtpFechaInicial.SelectedDate.Value.ToShortDateString() + "', 'DD/MM/YYYY')  ";//FJRF - Armamos la consulta
                StrConsultaEncabeszado1 = StrConsultaEncabeszado1 + "AND FECHAENTRADA <= TO_DATE('" + DtpFechaFinal.SelectedDate.Value.ToShortDateString() + "','DD/MM/YYYY')  ";//FJRF - Armamos la consulta
                StrConsultaEncabeszado1 = StrConsultaEncabeszado1 + "GROUP BY FECHAENTRADA,  NROPEDIDO,  HOJA, CODIGOPROVEEDOR,  NOMBREPROVEEDOR, DOCUMENTO,  CONCEPTO  ";//FJRF - Armamos la consulta
                StrConsultaEncabeszado1 = StrConsultaEncabeszado1 + "ORDER BY FECHAENTRADA DESC";//FJRF - Armamos la consulta

                TxbTituloGridAuditorias1.Text = " Encabezado de la entrada";//FJRF - Titulo del primer grid
                TxbTituloGridAuditorias2.Text = " Seleccione una entrada para que vea el detalle de la entrada";//FJRF - Titulo del segundo grid
                //FJRF - ARMAMOS EL ENCABEZADO TOTALES
                StrConsultaEncabezadoTotales1 = "SELECT COUNT(HOJA) AS MATERIALES, SUM(PROGRAMADO) AS CANTIDAD, SUM(VALORTOTAL) AS VALOR ";//FJRF - Armamos la consulta
                StrConsultaEncabezadoTotales1 = StrConsultaEncabezadoTotales1 + "FROM VIS_DETENTP ";//FJRF - Armamos la consulta
                StrConsultaEncabezadoTotales1 = StrConsultaEncabezadoTotales1 + "WHERE FECHAENTRADA >= TO_DATE('" + DtpFechaInicial.SelectedDate.Value.ToShortDateString() + "', 'DD/MM/YYYY')  ";//FJRF - Armamos la consulta
                StrConsultaEncabezadoTotales1 = StrConsultaEncabezadoTotales1 + "AND FECHAENTRADA <= TO_DATE('" + DtpFechaFinal.SelectedDate.Value.ToShortDateString() + "','DD/MM/YYYY')  ";//FJRF - Armamos la consulta
                //FJRF - CARGAMOS EL COMBO
                StrConsulta = "SELECT CODIGOPROVEEDOR, NOMBREPROVEEDOR ";//FJRF - Armamos la consulta
                StrConsulta = StrConsulta + "FROM VIS_DETENTP  ";//FJRF - Armamos la consulta
                StrConsulta = StrConsulta + "WHERE FECHAENTRADA >= TO_DATE('" + DtpFechaInicial.SelectedDate.Value.ToShortDateString() + "', 'DD/MM/YYYY')  ";//FJRF - Armamos la consulta
                StrConsulta = StrConsulta + "AND FECHAENTRADA <= TO_DATE('" + DtpFechaFinal.SelectedDate.Value.ToShortDateString() + "','DD/MM/YYYY')  ";//FJRF - Armamos la consulta
                StrConsulta = StrConsulta + "GROUP BY CODIGOPROVEEDOR,  NOMBREPROVEEDOR ";//FJRF - Armamos la consulta
                StrConsulta = StrConsulta + "ORDER BY NOMBREPROVEEDOR ";//FJRF - Armamos la consulta

                CargarCombo(CboCodigoFiltro1, StrConsulta, "CODIGOPROVEEDOR", "CODIGOPROVEEDOR", "Codigo");//FJRF - Cargamos el codigo
                CargarCombo(CboNombreFiltro1, StrConsulta, "CODIGOPROVEEDOR", "NOMBREPROVEEDOR", "Nombre");//FJRF - Cargamos el nombre
                #endregion
            }
            //FJRF - TRAEMOS EL ENCABEZADO
            DtAuditoriasEncabezado1 = MdoGeneral.consulta(StrConsultaEncabeszado1);//FJRF - Traemos los datos consultados
            DtgAuditorias1.ItemsSource = DtAuditoriasEncabezado1.DefaultView;//FJRF - Cargamos los datos consultados

            //FJRF - TRAEMOS ENCABEZADO TOTALES
            DtAuditoriasEncabezadoTotales1 = MdoGeneral.consulta(StrConsultaEncabezadoTotales1);//FJRF - Traemos los datos consultados totales
            DtgAuditoriasTotales1.ItemsSource = DtAuditoriasEncabezadoTotales1.DefaultView;//FJRF - Cargamos los datos consultados Totales

            TxbTituloGridTotales1.Text = " Totales encabezado de la entrada [ " + DtgAuditorias1.Items.Count + " ] ";//FJRF - Titulo del primer grid en totales
            TxbTituloGridTotales2.Text = " Totales del detalle de la entrada seleccionada";//FJRF - Titulo del segundo grid en totales

            PttV_ActivarFiltrosSegunOpcion();//FJRF - Activamos los filtros segun los datos seleccionados
        }
        protected void PttV_Procesar2(String StrFiltrarPorCampo1, String StrBuscarElDatoSeleccionado1)
        {
            if (DtgAuditorias1.Items.Count > 0)
            {
                if (StrAuditoriaSeleccionada == "Entradas por rango de fechas")
                {
                    #region FJRF - Armamos el detalle de las entradas
                    //FJRF - TRAEMOS EL DETALLE
                    StrConsultaDetalle1 = "SELECT (CODIGOMATERIAL || CODIGOCOLOR) AS CODIGO,  (NOMBREMATERIAL || ' - ' || NOMBRECOLOR) AS MATERIAL,  PROGRAMADO AS CANTIDAD,  COSTO, VALORTOTAL AS TOTAL,  NOMBREGRUPO AS GRUPO,  NOMBRESUBGRUPO AS SUBGRUPO,  NOMBREALMACEN AS ALMACEN, HOJA ";//FJRF - Armamos la consulta
                    StrConsultaDetalle1 = StrConsultaDetalle1 + "FROM VIS_DETENTP ";//FJRF - Armamos la consulta
                    StrConsultaDetalle1 = StrConsultaDetalle1 + "WHERE " + StrFiltrarPorCampo1 + " = '" + StrBuscarElDatoSeleccionado1 + "' ";//FJRF - Armamos la consulta
                    StrConsultaDetalle1 = StrConsultaDetalle1 + "ORDER BY MATERIAL";//FJRF - Armamos la consulta

                    TxbTituloGridAuditorias2.Text = " Detalle del dato seleccionado [ " + StrBuscarElDatoSeleccionado1 + " ]";

                    //FJRF - ARMAMOS EL ENCABEZADO TOTALES
                    StrConsultaDetalleTotales1 = "SELECT COUNT(HOJA) AS MATERIALES, SUM(PROGRAMADO) AS CANTIDAD, SUM(COSTO) AS COSTO, SUM(VALORTOTAL) AS TOTAL ";//FJRF - Armamos la consulta
                    StrConsultaDetalleTotales1 = StrConsultaDetalleTotales1 + "FROM VIS_DETENTP ";//FJRF - Armamos la consulta
                    StrConsultaDetalleTotales1 = StrConsultaDetalleTotales1 + "WHERE " + StrFiltrarPorCampo1 + " = '" + StrBuscarElDatoSeleccionado1 + "' ";//FJRF - Armamos la consulta

                    TxbTituloGridTotales2.Text = " Totales del detalle seleccionado [ " + StrBuscarElDatoSeleccionado1 + " ]";//FJRF - Titulo del segundo grid en totales

                    #endregion
                }
                //FJRF - TRAEMOS EL ENCABEZADO
                DtAuditoriasDetalle1 = MdoGeneral.consulta(StrConsultaDetalle1);//FJRF - Traemos los datos consultados
                DtgAuditorias2.ItemsSource = DtAuditoriasDetalle1.DefaultView;//FJRF - Cargamos los datos consultados

                //FJRF - TRAEMOS ENCABEZADO TOTALES
                DtAuditoriasDetalleTotales1 = MdoGeneral.consulta(StrConsultaDetalleTotales1);//FJRF - Traemos los datos consultados totales
                DtgAuditoriasTotales2.ItemsSource = DtAuditoriasDetalleTotales1.DefaultView;//FJRF - Cargamos los datos consultados Totales
            }
        }
        protected void PttV_BuscarDatosFiltrados()
        {
            if (StrAuditoriaSeleccionada == "Entradas por rango de fechas")
            {
                if (CboCodigoFiltro1.Visibility == Visibility.Visible)
                {
                    String StrCodigoComboSeleccionado = CboCodigoFiltro1.SelectedValue.ToString();

                    DtgAuditorias2.ItemsSource = null;//FJRF - Desvinculamos el objeto
                    DtgAuditorias2.Items.Clear();//FJRF - Limpiamos los objetos

                    DtgAuditoriasTotales2.ItemsSource = null;//FJRF - Desvinculamos el objeto
                    DtgAuditoriasTotales2.Items.Clear();//FJRF - Limpiamos los objetos

                    if (StrCodigoComboSeleccionado == "TODOS" && TxtDatoDigitadoFiltro2.Text.Trim() == "")//FJRF - Si esta seleccionado todos y no hay un numero de hoja hacemos lo siguiente hacemos lo siguiente
                    {
                        PttV_PonerFiltrosVisibles(false);//FJRF - Ponemos el objeto invisibles
                        PttV_Procesar1();//FJRF - Enviamos los datos originales
                    }
                    else//FJRF - Si tiene algun filtro hacemos lo siguiente
                    {
                        if (StrCodigoComboSeleccionado != "TODOS" && TxtDatoDigitadoFiltro2.Text.Trim() == "")//FJRF - Si esta es diferente de todos y no hay un numero de hoja hacemos lo siguiente hacemos lo siguiente
                        {
                            #region FJRF - Armamos el encabezado de las entradas
                            //FJRF - ARMAMOS EL ENCABEZADO
                            StrConsultaEncabeszado1 = "SELECT FECHAENTRADA, HOJA,  NROPEDIDO,  SUM(PROGRAMADO) AS CANTIDAD, SUM(VALORTOTAL) AS VALOR, DOCUMENTO, (CODIGOPROVEEDOR || ' - ' || NOMBREPROVEEDOR) AS PROVEEDOR,  CONCEPTO  ";//FJRF - Armamos la consulta
                            StrConsultaEncabeszado1 = StrConsultaEncabeszado1 + "FROM VIS_DETENTP  ";//FJRF - Armamos la consulta
                            StrConsultaEncabeszado1 = StrConsultaEncabeszado1 + "WHERE FECHAENTRADA >= TO_DATE('" + DtpFechaInicial.SelectedDate.Value.ToShortDateString() + "', 'DD/MM/YYYY')  ";//FJRF - Armamos la consulta
                            StrConsultaEncabeszado1 = StrConsultaEncabeszado1 + "AND FECHAENTRADA <= TO_DATE('" + DtpFechaFinal.SelectedDate.Value.ToShortDateString() + "','DD/MM/YYYY')  ";//FJRF - Armamos la consulta
                            StrConsultaEncabeszado1 = StrConsultaEncabeszado1 + "AND CODIGOPROVEEDOR = '" + CboCodigoFiltro1.SelectedValue + "' ";//FJRF - Armamos la consulta
                            StrConsultaEncabeszado1 = StrConsultaEncabeszado1 + "GROUP BY FECHAENTRADA,  NROPEDIDO,  HOJA, CODIGOPROVEEDOR,  NOMBREPROVEEDOR, DOCUMENTO,  CONCEPTO  ";//FJRF - Armamos la consulta
                            StrConsultaEncabeszado1 = StrConsultaEncabeszado1 + "ORDER BY FECHAENTRADA DESC";//FJRF - Armamos la consulta

                            //FJRF - ARMAMOS EL ENCABEZADO TOTALES
                            StrConsultaEncabezadoTotales1 = "SELECT COUNT(HOJA) AS MATERIALES, SUM(PROGRAMADO) AS CANTIDAD, SUM(VALORTOTAL) AS VALOR ";//FJRF - Armamos la consulta
                            StrConsultaEncabezadoTotales1 = StrConsultaEncabezadoTotales1 + "FROM VIS_DETENTP ";//FJRF - Armamos la consulta
                            StrConsultaEncabezadoTotales1 = StrConsultaEncabezadoTotales1 + "WHERE FECHAENTRADA >= TO_DATE('" + DtpFechaInicial.SelectedDate.Value.ToShortDateString() + "', 'DD/MM/YYYY')  ";//FJRF - Armamos la consulta
                            StrConsultaEncabezadoTotales1 = StrConsultaEncabezadoTotales1 + "AND FECHAENTRADA <= TO_DATE('" + DtpFechaFinal.SelectedDate.Value.ToShortDateString() + "','DD/MM/YYYY')  ";//FJRF - Armamos la consulta
                            StrConsultaEncabezadoTotales1 = StrConsultaEncabezadoTotales1 + "AND CODIGOPROVEEDOR = '" + CboCodigoFiltro1.SelectedValue + "' ";//FJRF - Armamos la consulta
                            #endregion
                        }
                        else
                        {
                            if (StrCodigoComboSeleccionado != "TODOS" && TxtDatoDigitadoFiltro2.Text.Trim() != "")//FJRF - Si esta es diferente de todos y hay un numero de hoja hacemos lo siguiente hacemos lo siguiente
                            {
                                #region FJRF - Armamos el encabezado de las entradas
                                //FJRF - ARMAMOS EL ENCABEZADO
                                StrConsultaEncabeszado1 = "SELECT FECHAENTRADA, HOJA,  NROPEDIDO,  SUM(PROGRAMADO) AS CANTIDAD, SUM(VALORTOTAL) AS VALOR, DOCUMENTO, (CODIGOPROVEEDOR || ' - ' || NOMBREPROVEEDOR) AS PROVEEDOR,  CONCEPTO  ";//FJRF - Armamos la consulta
                                StrConsultaEncabeszado1 = StrConsultaEncabeszado1 + "FROM VIS_DETENTP  ";//FJRF - Armamos la consulta
                                StrConsultaEncabeszado1 = StrConsultaEncabeszado1 + "WHERE FECHAENTRADA >= TO_DATE('" + DtpFechaInicial.SelectedDate.Value.ToShortDateString() + "', 'DD/MM/YYYY')  ";//FJRF - Armamos la consulta
                                StrConsultaEncabeszado1 = StrConsultaEncabeszado1 + "AND FECHAENTRADA <= TO_DATE('" + DtpFechaFinal.SelectedDate.Value.ToShortDateString() + "','DD/MM/YYYY')  ";//FJRF - Armamos la consulta
                                StrConsultaEncabeszado1 = StrConsultaEncabeszado1 + "AND CODIGOPROVEEDOR = '" + CboCodigoFiltro1.SelectedValue + "' ";//FJRF - Armamos la consulta
                                StrConsultaEncabeszado1 = StrConsultaEncabeszado1 + "AND TO_NUMBER(SUBSTR(HOJA, 3, 5)) >= '" + TxtDatoDigitadoFiltro2.Text.Trim() + "' ";//FJRF - Armamos la consulta
                                StrConsultaEncabeszado1 = StrConsultaEncabeszado1 + "GROUP BY FECHAENTRADA,  NROPEDIDO,  HOJA, CODIGOPROVEEDOR,  NOMBREPROVEEDOR, DOCUMENTO,  CONCEPTO  ";//FJRF - Armamos la consulta
                                StrConsultaEncabeszado1 = StrConsultaEncabeszado1 + "ORDER BY TO_NUMBER(SUBSTR(HOJA, 3, 5)) ";//FJRF - Armamos la consulta

                                //FJRF - ARMAMOS EL ENCABEZADO TOTALES
                                StrConsultaEncabezadoTotales1 = "SELECT COUNT(HOJA) AS MATERIALES, SUM(PROGRAMADO) AS CANTIDAD, SUM(VALORTOTAL) AS VALOR ";//FJRF - Armamos la consulta
                                StrConsultaEncabezadoTotales1 = StrConsultaEncabezadoTotales1 + "FROM VIS_DETENTP ";//FJRF - Armamos la consulta
                                StrConsultaEncabezadoTotales1 = StrConsultaEncabezadoTotales1 + "WHERE FECHAENTRADA >= TO_DATE('" + DtpFechaInicial.SelectedDate.Value.ToShortDateString() + "', 'DD/MM/YYYY')  ";//FJRF - Armamos la consulta
                                StrConsultaEncabezadoTotales1 = StrConsultaEncabezadoTotales1 + "AND FECHAENTRADA <= TO_DATE('" + DtpFechaFinal.SelectedDate.Value.ToShortDateString() + "','DD/MM/YYYY')  ";//FJRF - Armamos la consulta
                                StrConsultaEncabezadoTotales1 = StrConsultaEncabezadoTotales1 + "AND CODIGOPROVEEDOR = '" + CboCodigoFiltro1.SelectedValue + "' ";//FJRF - Armamos la consulta
                                StrConsultaEncabezadoTotales1 = StrConsultaEncabezadoTotales1 + "AND TO_NUMBER(SUBSTR(HOJA, 3, 5)) >= '" + TxtDatoDigitadoFiltro2.Text.Trim() + "' ";//FJRF - Armamos la consulta
                                #endregion
                            }
                            else
                            {
                                if (StrCodigoComboSeleccionado == "TODOS" && TxtDatoDigitadoFiltro2.Text.Trim() != "")//FJRF - Si esta es igual a todos y hay un numero de hoja hacemos lo siguiente hacemos lo siguiente
                                {
                                    #region FJRF - Armamos el encabezado de las entradas
                                    //FJRF - ARMAMOS EL ENCABEZADO
                                    StrConsultaEncabeszado1 = "SELECT FECHAENTRADA, HOJA,  NROPEDIDO,  SUM(PROGRAMADO) AS CANTIDAD, SUM(VALORTOTAL) AS VALOR, DOCUMENTO, (CODIGOPROVEEDOR || ' - ' || NOMBREPROVEEDOR) AS PROVEEDOR,  CONCEPTO  ";//FJRF - Armamos la consulta
                                    StrConsultaEncabeszado1 = StrConsultaEncabeszado1 + "FROM VIS_DETENTP  ";//FJRF - Armamos la consulta
                                    StrConsultaEncabeszado1 = StrConsultaEncabeszado1 + "WHERE FECHAENTRADA >= TO_DATE('" + DtpFechaInicial.SelectedDate.Value.ToShortDateString() + "', 'DD/MM/YYYY')  ";//FJRF - Armamos la consulta
                                    StrConsultaEncabeszado1 = StrConsultaEncabeszado1 + "AND FECHAENTRADA <= TO_DATE('" + DtpFechaFinal.SelectedDate.Value.ToShortDateString() + "','DD/MM/YYYY')  ";//FJRF - Armamos la consulta
                                    StrConsultaEncabeszado1 = StrConsultaEncabeszado1 + "AND TO_NUMBER(SUBSTR(HOJA, 3, 5)) >= '" + TxtDatoDigitadoFiltro2.Text.Trim() + "' ";//FJRF - Armamos la consulta                                
                                    StrConsultaEncabeszado1 = StrConsultaEncabeszado1 + "GROUP BY FECHAENTRADA,  NROPEDIDO,  HOJA, CODIGOPROVEEDOR,  NOMBREPROVEEDOR, DOCUMENTO,  CONCEPTO  ";//FJRF - Armamos la consulta
                                    StrConsultaEncabeszado1 = StrConsultaEncabeszado1 + "ORDER BY TO_NUMBER(SUBSTR(HOJA, 3, 5)) ";//FJRF - Armamos la consulta

                                    //FJRF - ARMAMOS EL ENCABEZADO TOTALES
                                    StrConsultaEncabezadoTotales1 = "SELECT COUNT(HOJA) AS MATERIALES, SUM(PROGRAMADO) AS CANTIDAD, SUM(VALORTOTAL) AS VALOR ";//FJRF - Armamos la consulta
                                    StrConsultaEncabezadoTotales1 = StrConsultaEncabezadoTotales1 + "FROM VIS_DETENTP ";//FJRF - Armamos la consulta
                                    StrConsultaEncabezadoTotales1 = StrConsultaEncabezadoTotales1 + "WHERE FECHAENTRADA >= TO_DATE('" + DtpFechaInicial.SelectedDate.Value.ToShortDateString() + "', 'DD/MM/YYYY')  ";//FJRF - Armamos la consulta
                                    StrConsultaEncabezadoTotales1 = StrConsultaEncabezadoTotales1 + "AND FECHAENTRADA <= TO_DATE('" + DtpFechaFinal.SelectedDate.Value.ToShortDateString() + "','DD/MM/YYYY')  ";//FJRF - Armamos la consulta
                                    StrConsultaEncabezadoTotales1 = StrConsultaEncabezadoTotales1 + "AND TO_NUMBER(SUBSTR(HOJA, 3, 5)) >= '" + TxtDatoDigitadoFiltro2.Text.Trim() + "' ";//FJRF - Armamos la consulta
                                    #endregion
                                }
                            }
                        }
                    }
                }
            }
            //FJRF - TRAEMOS EL ENCABEZADO
            DtAuditoriasEncabezado1 = MdoGeneral.consulta(StrConsultaEncabeszado1);//FJRF - Traemos los datos consultados
            DtgAuditorias1.ItemsSource = DtAuditoriasEncabezado1.DefaultView;//FJRF - Cargamos los datos consultados

            //FJRF - TRAEMOS ENCABEZADO TOTALES
            DtAuditoriasEncabezadoTotales1 = MdoGeneral.consulta(StrConsultaEncabezadoTotales1);//FJRF - Traemos los datos consultados totales
            DtgAuditoriasTotales1.ItemsSource = DtAuditoriasEncabezadoTotales1.DefaultView;//FJRF - Cargamos los datos consultados Totales

            TxbTituloGridTotales1.Text = " Totales encabezado de la entrada [ " + DtgAuditorias1.Items.Count + " ] ";//FJRF - Titulo del primer grid en totales
        }
        protected void PttV_Limpiar()
        {
            StrConsultaEncabeszado1 = "";//FJRF - Limpiamos los datos
            StrConsultaEncabezadoTotales1 = "";//FJRF - Limpiamos los datos
            StrConsultaDetalle1 = "";//FJRF - Limpiamos los datos
            StrConsultaDetalleTotales1 = "";//FJRF - Limpiamos los datos

            DtgAuditorias1.ItemsSource = null;//FJRF - Desvinculamos el objeto de los datos
            DtgAuditorias2.ItemsSource = null;//FJRF - Desvinculamos el objeto de los datos
            DtgAuditoriasTotales1.ItemsSource = null;//FJRF - Desvinculamos el objeto de los datos
            DtgAuditoriasTotales2.ItemsSource = null;//FJRF - Desvinculamos el objeto de los datos

            DtAuditoriasEncabezado1 = null;//FJRF - Limpiamos los datos
            DtAuditoriasEncabezadoTotales1 = null;//FJRF - Limpiamos los datos
            DtAuditoriasDetalle1 = null;//FJRF - Limpiamos los datos
            DtAuditoriasDetalleTotales1 = null;//FJRF - Limpiamos los datos

            DtAuditoriasEncabezado1 = new DataTable();//FJRF - Creamos una nueva instancia del objeto para nuevos datos
            DtAuditoriasEncabezadoTotales1 = new DataTable();//FJRF - Creamos una nueva instancia del objeto para nuevos datos
            DtAuditoriasDetalle1 = new DataTable();//FJRF - Creamos una nueva instancia del objeto para nuevos datos
            DtAuditoriasDetalleTotales1 = new DataTable();//FJRF - Creamos una nueva instancia del objeto para nuevos datos

            DtgAuditorias1.Items.Clear();//FJRF - Quitamos cualquier dato que tenga el grid
            DtgAuditorias2.Items.Clear();//FJRF - Quitamos cualquier dato que tenga el grid
            DtgAuditoriasTotales1.Items.Clear();//FJRF - Quitamos cualquier dato que tenga el grid
            DtgAuditoriasTotales2.Items.Clear();//FJRF - Quitamos cualquier dato que tenga el grid

            TxbTituloGridAuditorias1.Text = " SIN DATOS";//FJRF - Limpiamos los datos de los titulos
            TxbTituloGridAuditorias2.Text = " SIN DATOS";//FJRF - Limpiamos los datos de los titulos
            TxbTituloGridTotales1.Text = " SIN DATOS";//FJRF - Limpiamos los datos de los titulos
            TxbTituloGridTotales2.Text = " SIN DATOS";//FJRF - Limpiamos los datos de los titulos

            PttV_PonerFiltrosVisibles(false);//FJRF - Ponemos el objeto invisibles
        }
        protected void PttV_ExportarOFiltarDatos(String StrExportar)
        {
            String StrTituloFormulario = "", StrColumnasNumericas = "", StrCampoLlave = "", StrCampoPorDondeBusca = "";

            if (DtgAuditorias1.Items.Count > 0)//FJRF - Si el grid tiene datos hacemos lo siguiente
            {
                if (StrAuditoriaSeleccionada == "Entradas por rango de fechas")//FJRF - Si la opcion es esta hacemos lo siguiente
                {
                    if (StrExportar == "Encabezado")//FJRF - Enviamos los datos del primer grid
                    {
                        StrTituloFormulario = TxbTituloGridAuditorias1.Text.ToUpper();
                        StrCampoLlave = "HOJA";
                        StrCampoPorDondeBusca = "DOCUMENTO";
                        StrColumnasNumericas = "CANTIDAD, VALOR ";
                        DtConsulta = DtAuditoriasEncabezado1.Copy();
                    }
                    else
                    {
                        if (StrExportar == "Detalle")//FJRF - Enviamos los datos del segundo grid
                        {
                            StrTituloFormulario = TxbTituloGridAuditorias2.Text;
                            StrCampoLlave = "CODIGO";
                            StrCampoPorDondeBusca = "MATERIAL";
                            StrColumnasNumericas = "CANTIDAD, COSTO, TOTAL ";
                            DtConsulta = DtAuditoriasDetalle1.Copy();
                        }
                    }
                }

                FrmAyudasGenericas FrmAyudas = new FrmAyudasGenericas();//FJRF - Creamos una variable que maneje las propiedades del formulario que vamos a invocar
                FrmAyudas.pStrTituloVentana_Opcional = StrTituloFormulario;//FJRF - Le enviamos un titulo personalizado al formulario

                FrmAyudas.pDtDatosRecibidosConInformacion = DtConsulta.Copy();//FJRF - Enviamos los datos sacando una copia de los datos

                //FrmAyudas.pStrConsultaSql_Obligatorio = StrConsulta;//FJRF - Armamos la consulta
                FrmAyudas.pStrCampoCodigoDeLaTabla_Obligatorio = StrCampoLlave;//FJRF - Le decimos que este es el campo codigo o llave debe tener el nombre final osea el alias si es q lo tiene
                FrmAyudas.pStrBuscarPorDefectoEnElCampo_Opcional = StrCampoPorDondeBusca;//FJRF - Asignamos el dato a buscar
                FrmAyudas.pBooQuitarBotonRetornar_Opcional = true;//FJRF - Quitamos el boton de retornar datos
                FrmAyudas.pBooPonerBotonExportarExcel_Opcional = true;//FJRF - Activamos el boton para que se le permita la exportacion de datos a excel

                String StrColumnasParaFormato = StrColumnasNumericas;//FJRF - Columnas para formato numerico
                FrmAyudas.pStrNombreColumnasParaFormatoNumericoSeparadoPorComas_Opcional = StrColumnasParaFormato;//FJRF - Enviamos las columnas que se le van a hacer formato numerico

                FrmAyudas.ShowDialog();//FJRF - Invocamos el formulario
            }
            else//FJRF - Si no hay datos hacemos lo siguiente
            {
                MessageBox.Show("No hay datos para exportar o filtrar", "PROCESO CANCELADO", MessageBoxButton.OK, MessageBoxImage.Warning);//FJRF - Enviamos un mensaje al usuario
            }
        }

        #region FJRF - CargarCombosDejandoUnEspacioEnBlanco
        private Boolean CargarCombo(ComboBox CboComboACargar, string strConsultaOracle, string strSelectedValuePath, string strDisplayMemberPath, string strCodigoNombre)
        {
            Boolean BooSiHayDatos = false;//FJRF - Variable para informar si hay datos o no
            CboComboACargar.ItemsSource = null;
            CboComboACargar.Items.Clear();//FJRF - Borramos los posibles datos que pueda tener el combo

            DtConsulta = new DataTable();//FJRF - Inicializamos la variable
            DsConsulta = new DataSet();//FJRF - Inicializamos la variable

            DtConsulta = MdoGeneral.consulta(strConsultaOracle);//FJRF - Realizamos la consulta y retornamos los datos

            if (DtConsulta.Rows.Count > 0)//FJRF - Si hay datos llenar el combo
            {
                BooSiHayDatos = true;//FJRF - Informamos que hay datos

                DataRow drEncabezado;
                drEncabezado = DtConsulta.NewRow();

                if (strCodigoNombre == "Codigo")
                {
                    drEncabezado[strSelectedValuePath] = "ZZZ999";
                    drEncabezado[strDisplayMemberPath] = "TODOS";
                }
                if (strCodigoNombre == "Nombre")
                {
                    drEncabezado[strSelectedValuePath] = "ZZZ999";
                    drEncabezado[strDisplayMemberPath] = "TODOS";
                }

                DtConsulta.Rows.Add(drEncabezado);

                DsConsulta.Tables.Add(DtConsulta);//FJRF - Adicionameos el datatable al dataset
                CboComboACargar.ItemsSource = DsConsulta.Tables[0].DefaultView;//FJRF - Cargamos los datos encontrados
                CboComboACargar.SelectedValuePath = strSelectedValuePath.ToUpper();//FJRF - Cargamos la posicion
                CboComboACargar.DisplayMemberPath = strDisplayMemberPath.ToUpper();//FJRF - Decimos cual dato se mostrara

                CboComboACargar.SelectedValue = "ZZZ999";//FJRF - Ponemos el combo en la primera posicion
            }
            return BooSiHayDatos;//FJRF - Avisamos que si hay o no hay datos
        }
        #endregion

        protected void PttV_ActivarFiltrosSegunOpcion()
        {
            if (DtgAuditorias1.Items.Count > 0)//FJRF - Si el grid tiene datos hacemos lo siguiente
            {
                if (StrAuditoriaSeleccionada == "Entradas por rango de fechas")//FJRF - Si la opcion es esta hacemos lo siguiente
                {
                    LblTituloFiltro1.Content = "Seleccione el cliente";//FJRF - Establecemos el nombre del filtro
                    LblTituloFiltro2.Content = "Cuando el número de la hoja sea mayor o igual a ";//FJRF - Establecemos el nombre del filtro
                    PttV_PonerFiltrosVisibles(true);//FJRF - Ponemos el objeto visible
                }
            }
            else//FJRF - Si el grid no tiene datos hacemo lo siguiente
            {
                PttV_PonerFiltrosVisibles(false);//FJRF - Ponemos los objetos invisibles
            }
        }
        #endregion
        protected void PttV_PonerFiltrosVisibles(Boolean BooPonerObjetoVisible)
        {
            if (BooPonerObjetoVisible == true)//FJRF - Si se quieren poner los objetos visibles hacemos lo siguiente
            {
                LblTituloFiltrarDatos.Visibility = Visibility.Visible;//FJRF - Ponemos el objeto visible

                LblTituloFiltro1.Visibility = Visibility.Visible;//FJRF - Ponemos el objeto visible
                
                CboCodigoFiltro1.Visibility = Visibility.Visible;//FJRF - Ponemos el objeto visible
                CboNombreFiltro1.Visibility = Visibility.Visible;//FJRF - Ponemos el objeto visible

                LblTituloFiltro2.Visibility = Visibility.Visible;//FJRF - Ponemos el objeto visible
                TxtDatoDigitadoFiltro2.Visibility = Visibility.Visible;//FJRF - Ponemos el objeto visible

                RecBordeFiltrarDatos.Visibility = Visibility.Visible;//FJRF - Ponemos el objeto visible
            }
            else//FJRF - Si se quieren poner los objetos invisibles hacemos lo siguiente
            {
                LblTituloFiltrarDatos.Visibility = Visibility.Hidden;//FJRF - Ponemos el objeto invisible

                LblTituloFiltro1.Visibility = Visibility.Hidden;//FJRF - Ponemos el objeto invisible

                CboCodigoFiltro1.Visibility = Visibility.Hidden;//FJRF - Ponemos el objeto invisible
                CboNombreFiltro1.Visibility = Visibility.Hidden;//FJRF - Ponemos el objeto invisible

                LblTituloFiltro2.Visibility = Visibility.Hidden;//FJRF - Ponemos el objeto invisible
                TxtDatoDigitadoFiltro2.Visibility = Visibility.Hidden;//FJRF - Ponemos el objeto invisible

                RecBordeFiltrarDatos.Visibility = Visibility.Hidden;//FJRF - Ponemos el objeto invisible
            }
        }
    }
}
